// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

//
// ready remove the IEffectInterface use physic mat instead!
//

//////////////////////////////////////////////////////////////////////////
//					Weapon hit effect define begin						//
//////////////////////////////////////////////////////////////////////////

// define the fire hit effect type about visual and sound

#define EFFECT_ARMOUR SurfaceType1
#define EFFECT_BLOOD SurfaceType2
#define EFFECT_BRICK SurfaceType3
#define EFFECT_CLOTH SurfaceType4
#define EFFECT_CONCRETE SurfaceType5
#define EFFECT_DIRT SurfaceType6
#define EFFECT_ELECTRIC SurfaceType7
#define EFFECT_GLASS SurfaceType8
#define EFFECT_GRASS SurfaceType9
#define EFFECT_ICE SurfaceType10
#define EFFECT_LEAF SurfaceType11
#define EFFECT_METAL SurfaceType12
#define EFFECT_PAPER SurfaceType13
#define EFFECT_SAND SurfaceType14
#define EFFECT_SNOW SurfaceType15
#define EFFECT_STONE SurfaceType16
#define EFFECT_WATER SurfaceType17
#define EFFECT_WOOD SurfaceType18

#define EFFECT_DEFAULT SurfaceType6

// define the fire effect weapon type

#define EFFECT_WEAPON_BULLET 0
#define EFFECT_WEAPON_SWORD 1
#define EFFECT_WEAPON_HIT 2
#define EFFECT_WEAPON_MAGIC 3

#define  EFFECT_WEAPON_DEFAULT 0

// define the fire effect size

#define EFFECT_SIZE_SMALL 0
#define EFFECT_SIZE_LARGE 1

#define EFFECT_SIZE_DEFAULT 0

//////////////////////////////////////////////////////////////////////////
//						Weapon fire effect define end					//
//////////////////////////////////////////////////////////////////////////

#include "Isalong2.h"
#include "CGameManager.h"

/**
 * 
 */
class ISALONG2_API ResourceManager
{
public:

	static shared_ptr<ResourceManager> _resourceManager;

	static void Init();
	static shared_ptr<ResourceManager> GetResourceManager();

	// building
	UDestructibleMesh* _dustWallMesh;
	USoundBase* _placeSound;

	// UI
	UTexture2D* _bloodBarBorder;
	UTexture2D* _bloodBarContain;

	// character
	USkeletalMesh* _characterArms;
	//UAnimBlueprintGeneratedClass* _characterBP;
	//TSubclassOf<UCameraShake> _walkShake;
	//TSubclassOf<UCameraShake> _runShake;

	// common
	USoundBase* _commonSound;
	//TSubclassOf<UCameraShake> _commonShake;
	UMaterial* _bulletDecalMat;
	UMaterial* _perceptionMat;
	UMaterial* _buildingMat;
	UMaterialInstance* _outlineMat;

	// hand
	UAnimMontage* _handFireCharacterMontage;
	USoundBase* _handFireSound;
	//TSubclassOf<UCameraShake> _punchShake;

	// chicken
	USkeletalMesh* _chickenMesh;

	// dataTable
	TCHAR* _zombieDTUrl = TEXT("DataTable'/Game/BrainInVst/DataTables/ZombieDT.ZombieDT'");

	ResourceManager();
	~ResourceManager();

public:
	void GetDisplayerOfItemByID(int ID);
	UParticleSystem* GetFireHitEffect(EPhysicalSurface type, int size, int fireType);

	USoundBase* GetFootSound(EPhysicalSurface type);
};
